package com.android.versiondownloadlibrary;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.support.v4.app.NotificationCompat;

import java.text.NumberFormat;

import static android.content.Context.NOTIFICATION_SERVICE;

/**
 * Created by $Liudan on 2018/5/17 0017.
 */
public class NotificationHelper implements UpdateUi {
    NotificationCompat.Builder mBuilder;
    NotificationManager notificationManager;
    @Override
    public void createUi(Context context) {
        notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
        mBuilder = new NotificationCompat.Builder(context,"update");
        mBuilder.setContentTitle("睿瀚邦沃")
                //设置内容
                .setContentText("下载中")
                //设置大图标
                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                //设置小图标
                .setSmallIcon(R.mipmap.ic_launcher_round)
                //设置通知时间
                .setWhen(System.currentTimeMillis())
//                .setOngoing(true)//ture，设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
                .setTicker("我是测试内容") //通知首次出现在通知栏，带上升动画效果的
                //设置通知方式，声音，震动，呼吸灯等效果，这里通知方式为声音
                .setDefaults(Notification.DEFAULT_SOUND)
                .setProgress(100,0,false);
        //发送通知请求
        notificationManager.notify(10, mBuilder.build());
    }


    @Override
    public void updateUI(int max,int progress) {
        if(mBuilder!=null && notificationManager!=null){
            mBuilder.setProgress(max,progress,false);
            if(progress>=max){
                mBuilder.setContentText("下载完成 "+progress+" / "+max);
                try {
                    Thread.sleep(100);   //while循环里notification实时更新有可能失败 休眠100间隔一段时间
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
           }else {
                mBuilder.setContentText("下载中 "+progress+" / "+max);
            }

            notificationManager.notify(10,mBuilder.build());
        }
    }

    private String getPercent(int max,int progress){
        // 创建一个数值格式化对象
        NumberFormat numberFormat = NumberFormat.getInstance();
        // 设置精确到小数点后2位
        numberFormat.setMaximumFractionDigits(2);
        String result = numberFormat.format((float) max / (float) progress * 100);
        return result+"%";
    }
}
